====== ubuproxy : Proxy TCP/IP Generique ======

===== Présentation =====

ubuproxy est un script shell qui pemet de simplifier l'utilisation de "tcpproxy", ecrit par Wolfgang Zekoll, dont les sources sont distibués sous GPL v2 et disponibles à cette adresse :

http://www.quietsche-entchen.de/cgi-bin/wiki.cgi/-wiki/proxies/TcpProxy

Attention, plusieurs bugs importants ont étés corrigées dans la version déployée par ubuproxy. (L'auteur des corrections essaye de contacter l'auteur pour lui soumettre les differents patchs...) Les sources ainsi modifiées sont bien sur disponibles sur simple demande.

Concretement ubuproxy/tcpproxy permet de rediriger n'importe quel type de connexion TCP/IP, et de loguer tout le traffic qui passe au travers du proxy.
Les seules informations necessaires à la création d'un proxy sont donc :


  * Le port sur lequel se mettre en ecoute
  * L'interface réseau sur laquelle se mettre en ecoute (l'ip local de la machine)
  * le nom et le port de la machine cible

===== Installation =====

Télécharger et [[:tutoriel:comment_installer_un_paquet|installez le paquet]] ubuproxy, disponible ici : 
http://hoper78.free.fr/ubuntu/ubuproxy.deb

===== Configuration =====

La premiere chose à faire est de créer un proxy :

<code>
sudo ubuproxy proxy1 make
</code>

Le nom du proxy (ici "proxy1") n'a pas d'importance. Supposons que je sois sur une machine avec pour adresse IP : 10.0.0.1 et que je veuille créer un proxy qui ecoute sur le port 1000, puis qui redirige toutes les demandes sur le port 80 (serevur http) d'une autre machine, ayant pour IP : 10.0.0.2

<file>
 Listening port : 1000
 Interface [10.0.0.1] :
 Forward to (server:port) : 10.0.0.2:80
 Keep logs for X days [20] :

 ------------------------------------

 Add this configuration to proxy1 :
 Listening port : 1000
 Listening on 10.0.0.1
 forwarding conections to : 10.0.0.2:80
 and keep logs for 20 days.

 Is this ok ? [N/y]: y

 Configuration done in /etc/tcpproxy/proxy1.conf
 Making the /var/log/tcpproxy/proxy1 directory
 Adding the /etc/cron.daily/purge-logs-proxy1-1000 file...
</file>

==== Notes ====

  * si on relance cette commande en choissisant des parametres differents,  cela n'effacera rien mais ajoutera un nouveau port en ecoute pour ce meme proxy
  * Le nom d'un proxy ne dois pas contenir d'espace, de "." etc.
  * L'adresse IP prise par defaut est celle d'eth0, modifiez la au besoin
  * Par defaut, toutes les comunications des 5 derniers jours sont loguées
  * Le fait d'indiquer 0 désactivera la fonction de logs (totalement inutile si le protocol qui transite est crypté, comme avec ssh)
  * Il n'y a pas de limite au nombre de proxy que l'on peut créer
  * Il n'est bien sur pas possible d'ecouter plusieurs fois sur le meme port !


===== Lancement du proxy =====

Il reste a lancer le processus :

<code>
sudo ubuproxy proxy1 start
</code>

On peut egalement vérifier que le proxy est bien actif (online) :

<code>
sudo ubuproxy all status
</code>

Il reste à verifier que tout fonctionne. (en lancant un navigateur et en essaynt de se conecter sur "http://10.0.0.1:1000" par exemple, on arrivera en fait sur la machine 2 (10.0.0.2:80).

===== Arret/Supression =====

Il est possible de stoper un proxy avec la commande suivante :

<code>
sudo ubuproxy proxy1 start
</code>

Ou de supprimer totalement sa configuration ainsi que tous les fichiers de log qu'il a pu générer :

<code>
sudo ubuproxy proxy1 remove
</code>

===== Configuration evoluée =====

==== Fichiers de configurations ====

Ils se trouvent dans /etc/tcpproxy/ (un par proxy) et contiennent par defaut 
les informations suivantes :

<file>
port 1000
  interface 10.0.0.1
    timeout 600
    extended-info yes
    user 1000.0
    server 10.0.0.2:80
    writefile /var/log/tcpproxy/proxy1/1000
</file

On retrouve donc :

  * Le port en écoute
  * l'interface à utilisée
  * Au bout de 600 secondes, et sans activitée, la connexion est stoppée par le proxy. Mettre zéro desactive ce mecanisme.
  * En plus du traffic, le proxy indique qui s'adresse à qui dans le fichier de log (mettre "no" désactive cette fonctionalité)
  * L'utilisateur qui sera utilisé par le processus (uid.gid)
  * Le serveur cible et le port
  * La racine des fichiers de logs

==== A propos des logs ====

Chaque connexions génére un fichier de logs dont le nom est composé du port et du pid du process qui à géré la connexion. Les fichiers sont ensuite automatiquement archivés (une archive par jour et par port) puis compressé.

==== tcpproxy ====

Pour plus d'informations sur les possibilités de tcpproxy, man tcpproxy 8-)



----

Contributeurs : [[utilisateurs:Hoper]]